---
title: clsTeamAssignment
summary: API reference for clsTeamAssignment.
status: draft
owner: SAIF Corporation
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# clsTeamAssignment

`clsTeamAssignment` represents one assigned service-team member on a policy. `clsTeamAssignmentCollection` materializes instances from `pk72846_view_policy.team_assign_query`, then this type interprets employee-status codes, exposes the team-function mapping used by authorization and display code, and derives an email address either from internal SAIF naming conventions or from external-client lookup procedures for non-SAIF members.

## Purpose
- Hold one row from the policy service-team query with enough behavior to interpret status, function, and contact identity.
- Derive a usable email address from either internal SAIF user IDs or external lookup procedures ([BR-VP-022](../../business-rules.md#br-vp-022-team-member-email-address-derivation)).
- Preserve the unmasked consultant ID for demo scenarios so loss-control authorization can compare the real identity even when the displayed user name is masked ([BR-VP-008](../../business-rules.md#br-vp-008-demo-loss-control-matched-on-useridname), [BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data)).

## Context
- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.Business.View.Policy` (embedded)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `InitializeEmailAddress` | `Public Sub InitializeEmailAddress(ByVal inEmailAddressDPI As IDataPortalInfo)` | Uses SQL Server procedure `cp_external_client_lookup` to resolve a non-SAIF member's external email address and short display suffix ([BR-VP-022](../../business-rules.md#br-vp-022-team-member-email-address-derivation)). |
| `InitializeEmailAddressUsingSystemUser` | `Public Sub InitializeEmailAddressUsingSystemUser(ByVal inDPI As IDataPortalInfo)` | Uses Oracle procedure `sp73341_external_client_lookup` to resolve a non-SAIF member's external email address when the caller routes through the system-user path ([BR-VP-022](../../business-rules.md#br-vp-022-team-member-email-address-derivation)). |
| `UserName` | `Public ReadOnly Property UserName() As String` | Returns the team member's display user name, or a masking constant when the collection loaded the row in demo mode ([BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data)). |
| `UserIdName` | `Public ReadOnly Property UserIdName As String` | Preserves the original unmasked user ID when display masking is enabled so authorization logic can still compare the real consultant identity ([BR-VP-008](../../business-rules.md#br-vp-008-demo-loss-control-matched-on-useridname)). |
| `FullName` | `Public ReadOnly Property FullName() As String` | Returns the team member's display name, masked when the row was loaded for a demo user ([BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data)). |
| `PhoneNum` | `Public ReadOnly Property PhoneNum() As String` | Returns the team member's phone number or a demo masking value when required ([BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data)). |
| `PhoneExt` | `Public ReadOnly Property PhoneExt() As String` | Returns the stored phone extension, blank for masked demo rows. |
| `TeamFunction` | `Public ReadOnly Property TeamFunction() As clsTeamAssignmentCollection.TeamFunctions` | Returns the normalized service-team role enum used by consumers to locate a consultant, underwriter, billing rep, or similar assignment. |
| `TeamFunctionDescription` | `Public ReadOnly Property TeamFunctionDescription() As String` | Returns the database description for the role code so callers can display the assignment meaningfully. |
| `EmployeeStatus` | `Public ReadOnly Property EmployeeStatus() As EmployeeStatuses` | Interprets the stored employee-status code into the enum that controls email derivation branches. |
| `EmployeeStatusCode` | `ReadOnly Property EmployeeStatusCode() As String` | Exposes the raw status code for consumers that need the persisted source value. |
| `EmailAddress` | `Public ReadOnly Property EmailAddress As String` | Returns an `@saif.com` address for internal SAIF identities, an externally resolved address for non-SAIF members after initialization, or blank for inactive/other/empty assignments ([BR-VP-022](../../business-rules.md#br-vp-022-team-member-email-address-derivation)). |
| `ExternalFullNameExtension` | `Public ReadOnly Property ExternalFullNameExtension As String` | Stores the suffix derived during external lookup so UI code can append a short user-ID hint to the displayed external name. |
| `IsNonSAIFEmployee` | `Public ReadOnly Property IsNonSAIFEmployee As Boolean` | Indicates that external lookup may be required because the team member is not a SAIF employee. |
| `IsInactiveEmployee` | `Public ReadOnly Property IsInactiveEmployee As Boolean` | Indicates that email derivation should return blank because the assignment points at an inactive employee. |
| `IsOtherEmployee` | `Public ReadOnly Property IsOtherEmployee As Boolean` | Indicates that the row does not map to a recognized employee type and therefore should not derive an address automatically. |
| `MaskData` | `Public Property MaskData() As Boolean` | Tells `Load` whether to preserve live identity values or replace them with demo-safe placeholders ([BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data)). |

## Behavioral notes
- `Load` masks `UserName`, `FullName`, `PhoneNum`, and `PhoneExt` when `MaskData` is true, while preserving the original user name in `UserIdName` for authorization logic ([BR-VP-008](../../business-rules.md#br-vp-008-demo-loss-control-matched-on-useridname), [BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data)).
- `EmailAddress` derives internal addresses directly for `SERVIC`, `SCLC`, `SAFETYSERVICES`, and other active internal IDs by appending `@saif.com` ([BR-VP-022](../../business-rules.md#br-vp-022-team-member-email-address-derivation)).
- Non-SAIF members require one of the initialization methods to populate `m_EmailAddress`; otherwise `EmailAddress` remains blank even though the row exists ([BR-VP-022](../../business-rules.md#br-vp-022-team-member-email-address-derivation)).
- `InitializeEmailAddress` and `InitializeEmailAddressUsingSystemUser` both derive a last-name lookup key from `FullName` before calling their respective procedures.

## Constraints and usage notes
- Call the appropriate initialization method before reading `EmailAddress` for non-SAIF team members; the property alone does not trigger the database lookup.
- Team-function interpretation depends on `clsTeamAssignmentCollection.CodeToTeamFunction`, so unrecognized codes surface as `Unknown` at the collection layer.
- This type is loaded by the collection; callers do not retrieve it directly through BOF criteria.

## Sources
- `SAIF.Business.View.Policy/clsTeamAssignment.vb`
